import 'package:flutter/material.dart';

class ListDemo extends StatelessWidget {
  final _items = 'abcdefghijklmnopqrstuvwxyz'
      .split('')
      .map((str) => Center(
            heightFactor: 1.5,
            child: Text(
              str.toUpperCase(),
              textScaleFactor: 2,
              style: TextStyle(color: Colors.black45),
            ),
          ))
      .toList();

  @override
  Widget build(BuildContext context) {
    // Material设计规范中状态栏、导航栏、ListTile高度分别为24、56、56
    return Scaffold(
      appBar: AppBar(
        title: Text('基础列表控件'),
      ),
      body: Column(
        children: <Widget>[
          // 固定表头
          ListTile(title: Text("商品列表")),
          // 分割线
          Divider(
            height: 0.5, //高度
            color: Colors.grey[300], //颜色
            indent: 15, //左边距
            endIndent: 15, //右边距
            thickness: 0.5, //厚度
          ),
          // 在弹性布局中，可以使用Expanded自动拉伸组件大小
          // 解决ListView高度边界无法确定引起的异常
          Expanded(
            child: ListView(
              // itemExtent：确定每一个item的高度 会让item加载更加高效
              // shrinkWrap：该属性表示是否根据子组件的总长度来设置ListView的长度，默认值为false

              // ListView.builder适合列表项比较多（或者无限）的情况
              // ListView.separated可以在生成的列表项之间添加一个分割组件

              physics: BouncingScrollPhysics(),
              children: <Widget>[
                ListTile(
                  leading: Icon(Icons.access_time),
                  title: Text('Time'),
                ),
                ListTile(
                  leading: Icon(Icons.add_call),
                  title: Text('Call'),
                ),
                ListTile(
                  leading: Icon(Icons.phone),
                  title: Text('Phone'),
                ),
                ListTile(
                  leading: Icon(Icons.account_circle),
                  title: Text('Circle'),
                ),
                ListTile(
                  leading: Icon(Icons.airplay),
                  title: Text('Airplay'),
                ),
              ]..addAll(_items),
            ),
          )
        ],
      ),
    );
  }
}
